package com.huangyi.portalservice.homepage.controller;



import com.huangyi.commondomain.domain.R;
import com.huangyi.commondomain.domain.vo.BasePageVO;
import com.huangyi.portalservice.homepage.domain.dto.CityDescDTO;
import com.huangyi.portalservice.homepage.domain.dto.HouseListReqDTO;
import com.huangyi.portalservice.homepage.domain.dto.PullDataListReqDTO;
import com.huangyi.portalservice.homepage.domain.vo.CityDescVO;
import com.huangyi.portalservice.homepage.domain.vo.HouseDescVO;
import com.huangyi.portalservice.homepage.domain.vo.PullDataListVO;
import com.huangyi.portalservice.homepage.service.IHomePageService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 首页控制器
 * 
 * <p>提供首页相关的API接口，包括城市信息获取、筛选数据获取和房源列表查询
 * 
 * @author huangyi
 * @version 1.0
 * @since 2024
 */
@RestController
@RequestMapping("/homepage")
public class HomePageController {

    /** 首页服务接口 */
    @Autowired
    private IHomePageService homePageService;

    /**
     * 根据经纬度获取城市信息
     * 
     * @param lat 纬度
     * @param lng 经度
     * @return 城市信息视图对象
     */
    @GetMapping("/city_desc/get/nologin")
    public R<CityDescVO> getCityDesc(Double lat, Double lng){
        CityDescDTO dto = homePageService.getCityDesc(lat,lng);
        CityDescVO vo = new CityDescVO();
        BeanUtils.copyProperties(dto,vo);
        return R.ok(vo);
    }

    /**
     * 获取下拉筛选数据列表
     * 
     * @param reqDTO 筛选数据请求参数
     * @return 筛选数据列表视图对象
     */
    @PostMapping("/pull_list/get/nologin")
    public R<PullDataListVO> getPullDataList(@Validated @RequestBody PullDataListReqDTO reqDTO) {
        return R.ok(homePageService.getPullDataList(reqDTO));
    }

    /**
     * 查询房源列表
     * 
     * @param reqDTO 房源列表查询请求参数
     * @return 房源列表分页视图对象
     */
    @PostMapping("/house_list/search/nologin")
    public R<BasePageVO<HouseDescVO>> houseList(@Validated @RequestBody HouseListReqDTO reqDTO){
        return R.ok(homePageService.houseList(reqDTO));
    }

}
